<?php

require_once('OP.php');

class Instrumento extends ObjetoPersistente {
	public $nombre;
	public $descripcion;
	public $fecha_reg;
	public $fecha_mod;
	public $id_usuario;
	public $fuente;

	public function __construct($atributos = array()) {
		parent::__construct($atributos);
		self::$verbose_name = 'Pregunta';
		self::$verbose_plural = 'Preguntas';
	}

	public static function obtenerInstrumentoOrdenados() {
		$g = new Instrumento();
		$g = $g->obtenerOrdenados('fecha_mod');
		return $g;
	}

	public static function obtenerInstrumentoPorId($id) {
		$g = new Instrumento();
		$g = $g->filtrarPorID($id);
		return $g[0];
	}

	public static function obtenerIdInstrumento($nombre) {
		$g = new Instrumento();
		$g = $g->filtrar('nombre', '"' . $nombre . '"');
		if (empty($g))
			return False;
		return $g[0]->id;
	}

	public static function borrarInstrumento($id){
		$a=Instrumento::obtenerInstrumentoPorId($id);
		if($a == False){
			return False;
		}
		$a->borrar();
		return True;
	}

	public static function insertarInstrumento($nombre, $descripcion, $fecha_reg, $fecha_mod, $id_usuario, $fuente) {
		$aux = new Instrumento();
		if ($aux->obtenerIdInstrumento($nombre) != False){
			return False;
		}
        $a = new Instrumento(array('nombre' => $nombre, 'descripcion' => $descripcion, 'fecha_reg' => $fecha_reg, 'fecha_mod' => $fecha_mod, 'id_usuario' => $id_usuario, 'fuente' => $fuente));
		$a->guardar();
		return True;
	}

    public static function modificarInstrumento($id, $nombre, $descripcion, $fecha_reg, $fecha_mod, $id_usuario, $fuente) {
		$aux = new Instrumento();
        $us = Instrumento::obtenerInstrumentoPorId($id);
        if ($aux->obtenerIdInstrumento($nombre) != False && $us->nombre != $nombre){
			return False;
		}
        $a = new Instrumento(array('id' => $id, 'nombre' => $nombre, 'descripcion' => $descripcion, 'fecha_reg' => $fecha_reg, 'fecha_mod' => $fecha_mod, 'id_usuario' => $id_usuario,  'fuente' => $fuente));
		$a->guardar();
		return True;
	}
}
?>
